In the z/OS operating system, VSAM volume data sets (VVDSs) are data sets that describe the characteristics of virtual storage access method (VSAM) and storage management subsystem (SMS) managed data sets residing on direct access storage device (DASD) volumes. These VVDSs typically reside on the same volumes where the VSAM and SMS-managed (non-VSAM) data sets reside. Every volume containing VSAM or SMS-managed data sets will typically contain a VVDS to describe the data sets that are stored thereon.
A VVDS typically contains three types of entries, or records: a VSAM volume control record (VVCR) that contains BCS back pointers and information to manage DASD space; a VSAM volume record (VVR) for each VSAM data set on the volume and containing information about the VSAM data set; and a non-VSAM volume record (NVR) for each non-VSAM data set on the volume and containing information about the non-VSAM data set.
VVDS access is required whenever VSAM data sets and SMS-managed data sets are processed (e.g., read, written, updated, etc.) on DASDs. This requires physical I/O to the volume(s) that the data sets reside, both to access the VVDS as well as the data sets described in the VVDS. This is a performance bottleneck as there may be several physical I/O's to the volume to open and/or modify the VVDS associated with a particular data set, in addition to the I/O's required to access the data set itself.
To speed up access to the VVDS and improve performance when accessing VSAM or SMS-managed data sets, all or part of the VVRs or NVRs of a VVDS may be stored in a cache. The cache, for example, may be provided in a coupling facility accessible by one or more mainframe processors. When a processor attempts to access a data set, the processor may access all or part of the corresponding VVDS in the coupling facility cache instead of accessing the VVDS in the DASD volume where it resides.
To realize the benefits of a cache, it is desirable to store VVDS records (i.e., VVRs, NVRs, etc.) for data sets that are primarily read access in the cache. If the data sets are frequently the subject of write operations, the VVDS records will need to be updated frequently, requiring the VVDS records to be frequently written out to disk (i.e., by “destaging” the cache). This may significantly reduce the performance advantages of the cache.
Records subject to read operations do not incur such a performance penalty because they can reside in cache without needing to be repeatedly written out to disk. That is, once these records are loaded into the cache, the VVDS records can be repeatedly read from cache without needing to access the disk where the VVDS resides. Unfortunately, when performing I/O in the z/OS environment, I/O is performed on a block of records, as opposed to individual records. Thus, if one or more records of the block are the subject of a write operation, the entire block of records may need to be written out to disk, even if most of the records are primarily subject to read operations. This significantly reduces the performance advantages of the cache.
In view of the foregoing, what are needed are apparatus and methods to optimize the organization of volume records (i.e., VVRs and NVRs) in a VVDS. Ideally such an apparatus and method would significantly improve cache performance and reduce the need to frequently destage the cache. Further needed are apparatus and methods to dynamically optimize the performance of the cache as data usage changes over time.